/**
 * delManager.js - 根据命令行参数删除文件或文件夹（递归）
 * 用法：node 5.js <名称>
 * - 若为当前目录下的文件名：直接删除该文件
 * - 若为当前目录下的文件夹名：递归删除该文件夹及其所有内容
 */

const fs = require('fs');
const path = require('path');

const targetName = process.argv[2];
if (!targetName) {
  console.error('请提供要删除的文件或文件夹名称，如：node 5.js temp');
  process.exit(1);
}

const targetPath = path.join(__dirname, targetName);

function deleteRecursivelySync(p) {
  if (!fs.existsSync(p)) {
    throw new Error('路径不存在: ' + p);
  }
  const stat = fs.lstatSync(p);
  if (stat.isFile() || stat.isSymbolicLink()) {
    fs.unlinkSync(p);
    return;
  }
  if (stat.isDirectory()) {
    const entries = fs.readdirSync(p);
    for (const entry of entries) {
      const child = path.join(p, entry);
      deleteRecursivelySync(child);
    }
    fs.rmdirSync(p);
  }
}

try {
  const stat = fs.lstatSync(targetPath);
  if (stat.isFile() || stat.isSymbolicLink()) {
    fs.unlinkSync(targetPath);
    console.log('已删除文件：', targetName);
  } else if (stat.isDirectory()) {
    deleteRecursivelySync(targetPath);
    console.log('已递归删除文件夹及其内容：', targetName);
  } else {
    console.error('不支持的文件类型');
    process.exit(1);
  }
} catch (err) {
  console.error('删除失败：', err.message);
  process.exit(1);
}


